Skip to main content

Setting Up a Sample

The actus-riskservice-ce component in ACTUS Quickstart includes a sample two-dimensional prepayment behavior risk model for analyzing prepayment risks in loan contracts.


1. Design Approach​

This model uses two key parameters:

  1. Interest Rate Differential:

    • The difference between the current nominal interest rate on the loan and the current market interest rate for refinancing.
    • If refinancing is favorable (i.e., market rate is lower than the loan rate), prepayment is more likely.
  2. Remaining Loan Maturity:

    • If the loan is close to maturity, refinancing costs may discourage prepayment.
    • If maturity is far off, refinancing is more attractive.

Model Execution​

  • The model is called at specific simulation times to determine potential prepayment amounts.
  • A lookup table (2D surface) maps the probability or amount of prepayment based on interest rate differentials and time to maturity.

This model is a basic example; more advanced risk models can be integrated using the ACTUS riskservice API.


2. Creating a Prepayment Model Instance​

To define and store a sample prepayment model instance, use:

 source putPpm01.txt

Loading Model Attributes from putPpm01.txt into riskdata Database

This command loads model attributes from putPpm01.txt and saves them in the riskdata database.

Attributes of ppm01 (Example Model)​

  • Risk Factor ID: "ppm01" (Unique identifier for the model)
  • Reference Rate ID: "ust5Y" (5-year US Treasury rate as benchmark)
  • Prepayment Event Times:
    • "2015-03-01"
    • "2015-09-01"
    • "2016-03-01"
  • Lookup Surface: Defines prepayment probabilities for different interest rate differentials and maturities.

JSON Representation of ppm01

{
"riskFactorId": "ppm01",
"referenceRateId": "ust5Y",
"prepaymentEventTimes": ["2015-03-01", "2015-09-01", "2016-03-01"],
"surface": {
"interpolationMethod": "linear",
"extrapolationMethod": "constant",
"margins": [
{ "dimension": 1, "values": [0.03, 0.025, 0.02, 0.015, 0.01, 0.0, -0.05] },
{ "dimension": 2, "values": [0, 1, 2, 3, 5, 10] }
],
"data": [
[0.01, 0.05, 0.1, 0.07, 0.02, 0],
[0.01, 0.04, 0.8, 0.05, 0.01, 0],
[0, 0.02, 0.5, 0.03, 0.005, 0],
[0, 0.01, 0.3, 0.01, 0, 0],
[0, 0.01, 0.2, 0, 0, 0],
[0, 0, 0.1, 0, 0, 0],
[0, 0, 0, 0, 0, 0]
]
}
}

Prepayment Model Details

Lookup Surface​

  • Margins: Defines interest rate differentials (x-axis) and years until maturity (y-axis).
  • Data: Specifies prepayment fractions for each combination of interest rate differential and maturity.

Adding the Prepayment Model to a Risk Scenario​

To make this model available in a risk scenario, create a scenario called "scn02" that includes "ppm01".

 source putScn02.txt

Loading scn02 into the Riskdata Database

This command loads putScn02.txt and saves "scn02" in the riskdata database, linking it to "ppm01".

Summary​

  1. Define a Prepayment Model Instance (ppm01)

    • Uses interest rate differential and loan maturity to estimate prepayment.
    • Stored in riskdata using putPpm01.txt.
  2. Store the Model in a Risk Scenario (scn02)

    • Links ppm01 to scn02 using putScn02.txt.
  3. Run Commands to Load the Model and Scenario

    source putPpm01.txt  # Create prepayment model
    source putScn02.txt # Create scenario with model